package com.twoGroup.boot.mapper;


import com.twoGroup.boot.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
@Mapper
public interface UserMapper {
    /**
     * 注册
     * @param password  密码
     * @param email 邮箱
     * @param nickname 名称
     * @return  1
     */
    int addUser(@Param("password") String password, @Param("email") String email, @Param("nickname") String nickname);
    /**
     * 登录  判断用户名与密码的一一对应
     * @param email  用户名
     * @return 1
     */
    List<User> loginUser(@Param("email") String email);
    /**
     * 修改个人信息
     * @return 1
     */
    int updateUser(User user);
    /**
     * 注销账号：根据账号id，如果在id下有该用户开的网店，那么先删除网店再删除账号，并有相应网店提示。
     * @param userId delete from twogroup.t_user where user_id = #{userId}
     * @return 1
     */
    int deleteUser(@Param("userId") int userId);
    /**
     * 重置密码
     * @param email 重置密码的邮箱
     * @param password 新密码
     * @return 1
     */
    int resetPassword(@Param("email") String email, @Param("password") String password);
    /**
     * 根据username查询记录总条数
     * @param email 查询记录总条数
     * @return 1
     */
    Integer selectCountEmail(@Param("email") String email);
    /**
     * 根据userId查询记录总条数
     * @param userID id
     * @return 1
     */
    Integer selectCountId(@Param("userId") Integer userID);
    /**
     * 根据userId查询用户信息 返回list集合
     * @param userId us
     * @return 1
     */
    List<User> queryUserId(@Param("userId") Integer userId);
    /**
     * 根据userId查询用户信息 返回user对象
     * @param userId id
     * @return user
     */
    User selectUserId(@Param("userId") Integer userId);
    /**
     *  查询用户是否为管理员
     * @param email email
     * @return 1
     */
    int booleanAdmin(@Param("email") String email);
    /**
     * 根据email查询用户，并且返回一个对象
     * @param email 用户邮箱
     * @return  user对象
     */
    User queryUser(@Param("email") String email);
    //有关特殊功能
    /**
     * 用户名不能重复
     * @param email select email from twogroup.t_user where email = #{email}
     * @return 符合返回1
     */
    List<User> queryEmail(@Param("email") String email);
    /**
     * 昵称不能重复
     * @param nickname nickname
     * @return 1
     */
    Integer queryNickname(@Param("nickname") String nickname);
    /**
     * 通过email查询用户
     * @param email --> select * from
     * @return 1
     */
    User queryUserToEmail(@Param("email") String email);
    /**
     * 用户申请为商家：首先判断用户信息是否完整（省份证、实名、手机号必须填写）  flag值：   1--> 4
     * @param userId  flag值：   0--> 4
     * @return 1
     */
    User selectAllUser(@Param("userId") Integer userId);

    int applyBusiness(@Param("userId") int userId);
    /**
     * 密码
     * @param userId id
     * @return password
     */
    String queryPassword(@Param("userId") Integer userId);
    /**
     * 修改密码
     * @param userId id
     * @return 1
     */
    Integer updatePassword(@Param("userId") Integer userId, @Param("password") String password);
    /**
     * 更改头像
     * @param userId id
     * @return 1
     */
    int updateHeadImg(@Param("userId") Integer userId, @Param("headImg") String headImg);
}
